home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / cw / morse-it / morse-it.doc < prev    next >
Text File  |  1989-06-19  |  13KB  |  354 lines

  1.                               S.Maria Versa (PV) - ITALY 06-12-89
  2.  
  3. Dear Morse-it downloader,
  4.  
  5.                         the file you have just downloaded contains a
  6. routine that is an effective help for those who want to practice
  7. decoding Morse.
  8.  
  9. Morse-it was designed in a stormy night by a radio-amateur (IW2CNM) to
  10. serve as a "quick & dirty" Morse tutor for all the people that have to
  11. learn this code.
  12.  
  13. Please, note that in the following text, I use the terms "transmitter"
  14. and "receiver" not properly, because the routine is not able to drive a
  15. "on the air" keyer and it can't receive anything if you do not supply
  16. some additional hardware...
  17.  
  18. The routine is intended to be used only as a Morse tutor,  it can
  19. decode morse characters keyed in via the game port, and it can help you
  20. learning Morse outputting characters coded via the internal speaker of
  21. your P.C..
  22.  
  23. Morse-it is logically subdivided in two major parts : 
  24. TRANSMITTER section and RECEIVER section, let's first see the...
  25.  
  26.                       -- Transmitter section --
  27.  
  28. The routine ("program" is a too big word to designate the work...) is
  29. in effect an automatic oscillator that "transmits" random Morse-coded
  30. strings (5 characters long)  allowing the user to select proper speed
  31. and a "friendly" tone.
  32.  
  33. Selecting  faster speeds from time to time, you will be able to decode
  34. Morse at very high rates after a short training period, and you'll be
  35. able to pass all tests to become a radio-amateur.
  36.  
  37. Morse-it is rated for italian amateurs, so all the defaults are "tuned"
  38. on italian CW tests, but the routine is written in Basic and you can
  39. fastly modify it if you don't like a part or the whole code.
  40.  
  41. As is, Morse-it transmits a sequence of 23 lines of 13 strings of 5
  42. characters long random strings before pausing to let the user check
  43. what he has received.
  44.  
  45. After the entire sequence has been transmitted, the user can press
  46. <ENTER> key to continue the transmission of another sequence, or press
  47. <ESC> key to stop and return to operating system.
  48.  
  49. Before starting the sequence, the user is prompted to choose the
  50. following options :
  51.  
  52. - input  mode (keyboard directed, random or from a file): this option
  53. allows the user to select transmission of random characters, user
  54. strings, or a user file.
  55.  
  56. If you select random strings transmission,(A option of the "main menu")
  57. asks you to select the other options (tone, speed, printer output...)
  58. and then starts "beeping" the sequence.
  59.  
  60. If you select "File input" (F option of the "m.m."), the program asks
  61. you to key in the file name you want to transmit and then starts the
  62. transmission of the file's content.
  63.  
  64. Selecting "Keyboard directed input" (D option) cause the program
  65. to prompt you to insert a string (terminated with <ENTER> key) and then
  66. the program will transmit the  string at the user selected speed and
  67. tone.
  68.  
  69. An asterisk ("*") as first character of the input string will stop the
  70. program and returns to the operating system.
  71.  
  72. In addition you can choose the following options :
  73.  
  74. - printer output :to print the output characters (for all the modes
  75. listed above). Selecting printer output can cause some noise
  76. (printers are noisy...), but is very useful to check the strings
  77. transmitted with the ones  received by the user.
  78.  
  79. - speed : the transmission speed (you can specify a value from 1 to
  80. 10'000'...000 characters per minute, but the routine works properly
  81. only between a range from 10 to 120 chars. per minute.
  82.  
  83. - tone : the user can select the oscillator tone in order to make the
  84. decoding more friendly, as above you can specify any value between 1
  85. and 10'000'....000 Hz, but the computer internal speaker works from 200
  86. to 7000 Hz, higher or lower  driving frequencies generate a poor
  87. output. 
  88.  
  89.  
  90. Defaults for the options above are : 
  91. NO : output is directed to SCREEN 
  92. 40 : the default speed unless otherwise indicated is 40 char./min.
  93. 700: the default tone is 700 Hz 
  94.  
  95. As I told you before, these defaults are tuned for italian Morse test
  96. that a future amateur must stand, but you can easily change them (Basic
  97. is a simple and universal language I hope...).
  98.  
  99.  
  100.                        -- Receiver section --
  101.  
  102. The receiver section is very simple but effective: it detects a ON/OFF
  103. condition on a pin of the GAME PORT, computing the duration of each
  104. state to detect characters and decode what you key-in via the game port.
  105.  
  106. The algorithm is very simple to improve speed, and there are some
  107. limits : 
  108.  
  109. - a character is printed on the screen only after the subsequent has been
  110. keyed-in by the user (the last character that you key-in is echoed only
  111. if you input another character...)
  112.  
  113. - the set of decipherable characters is small (but it is very easy to
  114. increase it)
  115.  
  116. - this version of Morse-it can't decode groups such as "AR","KK","CQ"
  117.  
  118. - NO printer output is provided (time is always scarce when you do real
  119. time operations)...
  120.  
  121. Keep in mind that if Morse-it can't decipher a character (due to a
  122. user mistake...) it will print an "*" and continue decoding, this
  123. allows you to correct "pacing" and transmitting errors during the
  124. exercise.
  125.  
  126.  
  127.  
  128. --- How to connect the key to the game port ---
  129.  
  130. You have to buy a DB 15 (male or female depending on your computer Game
  131. port input), a DB 15 is a connector with two rows of 8 and 7 pins that
  132. are used to access various inputs on the game port (or "joystick port").
  133.  
  134. Obviously you need a digital input, so you can leave off the two
  135. analogic ones and connect the key directly to the pin 10 and 12 of the
  136. DB 15 (logical input and GND).
  137.  
  138.  A soldering iron and two copper wires are recommended to achieve a
  139. durable result (you can use chewing gum or glue to set-up it faster,
  140. but it won't be the same...).
  141.  
  142. The pins of the DB 15 are numbered on the back side of the connector so
  143. you won't have troubles to connect the key properly... DO NOT SHORT
  144. CIRCUIT ANY of the pins on the game port, probably you can't blow-up it
  145. even if you connect all the pins together, but anyway.....
  146.  
  147. After connecting the key you can run Morse-it: choose the Receiver
  148. option and then start keying some Morse coded words to test the
  149. program. 
  150.  
  151.  
  152.  
  153. SOME IMPORTANT NOTES ON MORSE-IT
  154. --------------------------------
  155.  
  156. If you make changes to the routine and recompile it (very important if
  157. you plan to use the receiver section that works only if you compile
  158. program) keep in mind that some old BASIC compilers are not smart
  159. enough to compile MORSE-IT.
  160.  
  161. I compiled and linked Morse-it with many different compilers and I saw
  162. that in some cases it didn't work : the most common problem is that old
  163. BASICs do not preserve tone duration in SOUND instruction as  in
  164. BASIC interpreter, program speed increases parallel with tone "speed"
  165. causing the output to be too fast...
  166.  
  167. I compiled Morse-it with Microsoft Quick Basic 2.0 (tm)  and so I think
  168. that newer version will work even better.
  169.  
  170.  
  171.  
  172. Modifying the RECEIVER SECTION
  173. ------------------------------
  174.  
  175. If you run Morse-it on a IBM AT or a computer that is faster than a
  176. plain 4.77 MHz P.C. don't forget to change the constants in the tests
  177. at the following lines :
  178.  
  179. 1000 IF P>150 ... ... ... : increase 150 if your PC is faster and
  180. decrease if slower than a standard P.C. (150 is the number of  pause
  181. loops that Morse-it does when a "pause between characters" has been
  182. detected)
  183.  
  184. At the time, finding something slower than the standard P.C. is a very
  185. hard task... It could happen if your old P.C. is running a
  186. multitasking/multiuser environment.
  187.  
  188. If all seems OK and you experience poor transmission speed, try a speed
  189. test (Norton SI (tm), PCtools (tm) or something like...) they'll help
  190. you fixing the problem.
  191.  
  192. 1050 IF P>30 ... ... ...  : same as above... 30 is the "pause between
  193. characters element" (dot or line) loops count.
  194.  
  195. 1190 IF C<=40 ... ... ... : C represents the duration of a Morse code
  196. "dot" (.) computed in "key down loops" so, a value of 40 or less
  197. indicates that Morse-it detected a "dot". The constant 40 must be
  198. increased if you see that computer detected a "line" and you keyed-in a
  199. "dot" instead.
  200.  
  201. 1200 IF C>40 ... ... ...  : a line has been detected... (Increase this
  202. value only if Morse-it seems to detect only lines and "skip" dots.)
  203.  
  204. 1300 ... ... :IF P>700 ...: 700 indicates the number of loops to detect
  205. a "pause between words", if you see that words are printed without
  206. spaces among them you must increase 700 to the proper value.
  207.  
  208. IMPORTANT : Basic compilers are slower than the CPU speed, this
  209. means that if you have a P.C. 6 times faster than original P.C. you
  210. DON'T HAVE to multiply the above values by 6... 
  211.  
  212. I couldn't make intensive tests, but I think that the right rate could
  213. be 3 or at least 4, try some values from 2 to 5 and see what
  214. happens...Good luck!!!
  215.  
  216.  
  217. MODIFYING THE TRANSMITTER SECTION
  218. ---------------------------------
  219.  
  220. If you use a smart compiler that preserves the right tone duration, you
  221. don't need to make changes to the program, you can do something if you
  222. don't like the timing ratios during transmission.
  223.  
  224. Morse-it uses these timing ratios : 
  225.  
  226. dot     : 1 time unit (depending on speed)
  227. line    : 3 (line duration is 3 * dot_duration)
  228. char.spacing : 5 (space between characters is 5 * dot_duration)
  229. word spacing : 7 (space between different words is 7 * dot_duration)
  230.  
  231. To change these ratios modify the following lines :
  232.  
  233. 460, 470, 480, 490, 750, 780
  234.  
  235. Obviously these ratios affect transmission "pacing" so change them with
  236. care (only if you feel your P.C. "beeping" randomly instead of
  237. transmitting...).
  238.  
  239.  
  240. --- Adding characters to the set ---
  241.  
  242. Currently, Morse-it can transmit or receive 40 characters and it isn't
  243. able to decode groups such as "AR", "CQ", "VVV" (I'm working on a newer
  244. version of the receiver that would be able to do so...).
  245.  
  246. You can easily modify the character set changing the lines : 
  247.  
  248. 10 : "update" the DIM A$(40) to match your specifications
  249. 20 : change the upper limit of the loop (FOR I = 1 TO <new value>)
  250. 30 : H$ contains the entire character set so you have to update it
  251. (appending characters AT THE END of the string) when increasing the
  252. character set.
  253.  
  254. 500, 510, 520 : these lines turn to Basic a pseudo-Morse code where :
  255.  
  256. 1 - represents a "LINE" (I did not use a "-" sign because listing would
  257. be less readable).
  258.  
  259. 0 - indicates a "DOT" (see above...) 
  260.  
  261. The right sequence for updating the character set is :
  262. - append the character at the end of H$ 
  263. - update the DIM A$(40) declaration 
  264. - modify the READ loop increasing upper bound 
  265. - add the proper DATA string at 500-520 recoding it in the proper
  266. format as seen above.
  267.  
  268.  
  269.  
  270. ARE YOU AN AMATEUR ?
  271. --------------------
  272.  
  273. If you answered YES to the preceding question you can "field test"
  274. Morse-it in a real environment : build the following hardware and then
  275. experience a working (cheap!!!!!!) Morse decoder...
  276.  
  277. You need only :
  278.  
  279. - an amplifier (an uA 741 integrated circuit plus some resistor and
  280. capacitors can do the job)
  281.  
  282. - a 700 Hz NARROW filter : useful only with old receivers, new
  283. ones have GOOD built-in filters...(Another uA 741 IC...)
  284.  
  285. - a wave squarer : you have to convert noisy receiver output to a sharp
  286. digital signal of proper level (a 74LS14 IC can be used with
  287. success...)
  288.  
  289. Assemble all these components on a small board using a soldering iron
  290. and then connect the 741 input to the receiver's audio output and the
  291. 74LS14 output to the GAME PORT as seen for the Morse-Key.
  292.  
  293. Devoting 4 $ of your yearly income (not tax deductible!) you'll have a
  294. working Morse decoder....
  295.  
  296.  
  297.  
  298. PROBLEMS, NOTES, FUTURE RELEASES
  299. --------------------------------
  300.  
  301. If you need, contact me via E-Mail at the following addresses:
  302.  
  303.  
  304. CONTINENTAL U.S. :
  305.  
  306. MOTHER'S PLACE BBS : phone (216)-447-0836  (data:2400,8,N,1)
  307.  
  308. USER : ALEX BRUCIAMONTI
  309.  
  310.  
  311. ITALY: (BBS uses ITALIAN language!)
  312.  
  313. MC-LINK            : phone (0039)-6-451-0211   
  314.                            (0039)-6-451-3182
  315.                       (0039)-6-418-0440   (8 lines)
  316.                            data: 300/2400,8,N,1 or 7,S,1
  317.  
  318. USER : MC6608 (ALESSANDRO BRUCIAMONTI)
  319.  
  320. As to date, these are two non profit BBSes located respectively in OHIO
  321. (Cleveland Area) and ITALY (Rome).
  322.  
  323. Ordinary mail is welcome at the following address :
  324.  
  325.     Alessandro Bruciamonti
  326.     via Roma 72
  327.     27047 S.Maria della Versa (PV)
  328.     ITALY
  329.     
  330.  
  331. Please, if you leave messages on the U.S. BBS, allow me a couple of
  332. weeks to answer : international phone calls cost lots of money and I
  333. can read E-Mail only one or two times per month.
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340. *********************************************************************
  341. * ARC - ZIP PACKING LIST                                            *  
  342. *********************************************************************
  343.  
  344. Either you downloaded MORSE-IT as a .ARC or .ZIP file, the archive must
  345. have the following files :
  346.  
  347. MORSE-IT.BAS : BASIC source code 
  348. MORSE-IT.DOC : This doc. file
  349. MORSE-IT.EXE : Executable file for MS-DOS (tm) operating system
  350. (compiled with Microsoft Quick Basic rel. 2.0 (tm) and BCOM20.LIB)
  351.  
  352.  
  353.  
  354. 73 de IW2CNM  - Alessandro